package it.clariter.web.action;

import it.clariter.dao.RuoloDAO;
import it.clariter.dao.UtenteDAO;
import it.clariter.model.Ruolo;
import it.clariter.model.Utente;
import it.clariter.utils.DateUtils;
import it.clariter.web.form.UtenteForm;
import it.clariter.web.action.ActionConstants;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class EseguiUtenteAction extends DispatchAction {


	public ActionForward modificaUtente(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception{
        
		if(request.getSession().getAttribute("utente")==null){
			response.sendRedirect("login.jsp");
		}
		
		HttpSession session = request.getSession();
		boolean aggiornaPassword=true;
		UtenteForm l = (UtenteForm) form;
		Utente utente=new Utente();
		Ruolo ruolo = new RuoloDAO().get(l.getId_ruolo());
		utente.setRuolo(ruolo);
		utente.setIdUtente(l.getIdUtente());
		utente = new UtenteDAO().get(utente);
		String passNuova = request.getParameter("nuovaPassword");
		// gestione password
		if(passNuova==null || passNuova.trim().equalsIgnoreCase("") || passNuova.equals(ActionConstants.PASSWORD_BASE)){
			aggiornaPassword=false;
		}else{
			utente.setPassword(passNuova);
		}
		utente.setStato(Integer.parseInt(request.getParameter("attivo")));
		utente.setCognome(l.getCognome());
		utente.setNome(l.getNome());
		utente.setLogin(l.getLogin());
		utente.setIndirizzoMail(l.getIndirizzoMail());
		new UtenteDAO().update(utente, aggiornaPassword);
		utente=(Utente) session.getAttribute("utentePerRicerca");
		List<Utente> lista = new UtenteDAO().findByExample(utente);
		session.setAttribute("utenti", lista);
		request.setAttribute("messaggio","Modifica effettuata correttamente");

		return mapping.findForward("listaUtenti");

	}

	public ActionForward nuovoUtente(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception{
        
		if(request.getSession().getAttribute("utente")==null){
			response.sendRedirect("login.jsp");
		}
		HttpSession session = request.getSession();

		UtenteForm l = (UtenteForm) form;
		Utente utente=new Utente();
		Ruolo ruolo = new RuoloDAO().get(l.getId_ruolo());
		utente.setRuolo(ruolo);
		BeanUtils.copyProperties(utente, l);
		//settaggio automatico data iscrizione e stato attivo
		utente.setDataIscrizione(DateUtils.getCurrentDate());
		utente.setStato(ActionConstants.STATO_ATTIVO);
		utente.setPassword(request.getParameter("nuovaPassword"));
		new UtenteDAO().insert(utente);
		utente=(Utente) session.getAttribute("utentePerRicerca");
		List<Utente> lista = new UtenteDAO().findByExample(utente);
		session.setAttribute("utenti", lista);
		request.setAttribute("messaggio","Utente inserito correttamente");

		return mapping.findForward("listaUtenti");
	} 

}
